# exposes

- 类型：`PluginExposesOptions`
- 是否必填：否
- 默认值：`undefined`
- 使用场景：决定对外暴露的模块以及文件入口

:::tip

生产者特有参数，设置了 `exposes` 则可认为这是一个生产者

:::

配置之后，会将 expose 的模块单独抽离成一个 chunk ，如果有异步 chunk 会在抽取成单独 chunk（具体拆分行为根据 chunk 拆分规则而定）。

`PluginExposesOptions` 类型如下：

```tsx
interface PluginExposesOptions {
  [exposeKey: string]: string | ExposesConfig;
}

interface ExposesConfig {
  // 文件入口
  import: string;
}
```

其中 `exposeKey` 与 [Package Entry Points](https://nodejs.org/api/packages.html#package-entry-points) 规范基本一致（除了不支持正则匹配）。

举例：

```jsx
module.exports = {
  plugins: [
    new ModuleFederationPlugin({
      name: 'provider',
      exposes: {
        // 注意： 不支持 "./"，为 . 导出是表示为 default 默认导出
        '.': './src/index.tsx',
        './add': './src/utils/add.ts',
        './Button': './src/components/Button.tsx',
      },
    }),
  ],
};
```
